package 集合.map集合;

import java.util.*;

/**
 * map的几种遍历方法演示：
 */
public class MapList {
    public static void main(String[] args) {
        //创建一个map
        HashMap<Integer, String> map = new HashMap<>();
        //添加几个元素
        map.put(1,"张三");
        map.put(2,"李四");
        map.put(3,"王二");
        map.put(4,"赵武");
        //打印原始map
        System.out.println(map);
        System.out.println("--------------------");
        //遍历打印map
        //方式一：通过遍历所有的key值集合set，每次再根据key获取对应的value值
        Set<Integer> keySet = map.keySet();
        //获取集合的迭代器
        Iterator<Integer> iterator = keySet.iterator();
        //迭代器打印
        while (iterator.hasNext()){
            Integer key = iterator.next();
            System.out.println(key+"="+map.get(key));
        }
        System.out.println("--------------------");

        //方式二：遍历所有的value值集合collection
        Collection<String> values = map.values();
        Iterator<String> iterator1 = values.iterator();
        while (iterator1.hasNext()){
            String next = iterator1.next();
            System.out.println(next);
        }
        System.out.println("--------------------");

        //方式三：遍历所有的entrySet值的集合set,一个entry：表示一对key-value组合
        //Map.Entry是map的子接口
        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
        System.out.println(entrySet);//直接打印键值对看看内容
        Iterator<Map.Entry<Integer, String>> iterator2 = entrySet.iterator();
        while (iterator2.hasNext()){
            //entry是一个JavaBean类，里面有封装好的getKey()与getValue()方法，通过这两个方法分别获取这个键值对的key，value值
            Map.Entry<Integer, String> entry = iterator2.next();
            System.out.println(entry);
//            System.out.println(entry.getKey()+"="+entry.getValue());
        }
    }
}
